var index_stock_name = '';//全局变量，被搜索的股票名称
var index_ts_code = '';//全局变量，被搜索的股票ts代码
var index_stock_name_list = '';//全局变量，被搜索的股票名称
var index_ts_code_list = '';//全局变量，被搜索的股票ts代码


/******
 * 页面加载时处理函数
 * *****/
window.onload = window_onload();//窗体加载后执行

function window_onload() {

    //页面加载时刷新股指K线图
    index_K_line_show();
    //刷新表格
    // refresh_attention_table();
    refresh_attention_table();
    refresh_cancel_attention_table();

}


/***********************
 * 更新后台数据函数
 * ****************************/


/************
 * 20200302
 *更新数据函数,包括更新每日交易、交易指标、大宗交易、资金流向、更新上述四项数据函数、股票基本信息、公司信息、股指交易信息
 *ajax中data数据说明：cmd_class表示命令类别，command表示具体命令。后台处理时须一一对应。具体命令类别和具体命令，可查询stock.views单元中对应处理函数说明
 *************/
function update_daily() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_daily"},//cmd_class表示返回命令类别，command表示具体返回的命令，提高判断语句效率
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

function update_daily_basic() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_daily_basic"},
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

function update_block_trade() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_block_trade"},
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

function update_moneyflow() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_moneyflow"},
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })

}

function update_index_daily() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_index_daily"},
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

function update_all_basic() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_all_basic"},
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

function update_stockbasic() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_stockbasic"},
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

function update_company() {
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "update", command: "update_company"},
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })
}


/******************************
 * 搜索查询股票
 * ******************************************/

function delaySearch(search_txt) {
    var keycode = event.keyCode;//如果是上下按钮，则什么都不做
    if ((keycode == 38) || (keycode == 40)) {
        return;
    }

    var searchtxt = $("#input_search_stockinfo").val().trim();
    //当输入的是数字，同时长度大于3的时候
    if (!isNaN(searchtxt) && (searchtxt.length > 3)) {
        search_input();
    }
    if (isNaN(searchtxt) && (searchtxt.length >= 1)) {
        search_input();
    }

    // t = setTimeout("search_input()", 1500);
}

function search_input() {
    var searchtxt = $("#input_search_stockinfo").val().trim();
    if (searchtxt == '') {
        return;
    }

    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "query", command: "search_autofill", search_txt: searchtxt},
        success: function (callback) {
            add_option_from_search_return(callback);
            index_stock_name_list = callback[0];
            index_ts_code_list = callback[1];
            // alert(index_stock_name_list);
            // alert(index_ts_code_list);


        },
        error: function () {
            alert('提交失败');
        }
    })
}

function add_option_from_search_return(result) {
    $("#searchlist").empty();
    for (i = 0; i < result[0].length; ++i) {
        var option = "<option  label=\'" + result[1][i] + "\'  value=\'" + result[0][i] + "\' >" + "</option>";//datalist中label时最终显示信息，value是用来查找的，chromn可以同时按两个属性查找
        // var option = "<option value=\'"+result[0][i]+"\'  />";

        $("#searchlist").append(option);
    }
}


/**********
 添加关注股票
 *********/
function add_attention_stock() {
    /**
     20200209，从数据库中查找当前最新股票信息，并添加进关注列表。关注时间和价格按数据库中最新时间计算
     */
    strategy = prompt('请输入选股依据', '')
    $.ajax({
        url: "./",
        type: "GET",
        data: {
            cmd_class: "attention",
            command: "add_one_attention",
            stock_name: index_stock_name,
            strategy: strategy,
        },
        success: function (callback) {

            // alert('提交关注股票成功');
            refresh_attention_table()

        },
        error: function () {
            alert('提交关注股票失败');

        }
    })
    //$("#btn_add_attention").attr("disabled");

}


/**************************
 * 使用echarts画股指K线图相关函数
 * ********************************/

function index_K_line_splitData(rawData) {
    /******
     * @method 数据分离函数，将日期和股指交易数据分离成两个数组
     * @param rwaData:需要分离的数据，json格式传入
     * @return 包含两个数组的字典结构，categoryData：日期数据，values：交易数据数组，数据分别为开盘价、收盘价、最低价、最高价
     * ****/

    var categoryData = [];
    var values = [];
    for (i = rawData.length - 1; i >= 0; i--) {

        categoryData.push(rawData[i].fields['trade_date']);
        trade_value = [rawData[i].fields['open'], rawData[i].fields['close'], rawData[i].fields['low'], rawData[i].fields['high']];
        values.push(trade_value);

    }
    return {
        categoryData: categoryData,
        values: values
    }

}

function index_K_line_calculateMA(dayCount, rawData) {
    /**
     * @method 计算MA值
     * @param dayCount：日线值，5日，10日，30日等。rawData：每日交易数据
     * @return result MA线计算结果
     * */
    var result = [];
    for (var i = 0, len = rawData.values.length; i < len; i++) {
        if (i < dayCount) {
            result.push('-');
            continue;
        }
        var sum = 0;
        for (var j = 0; j < dayCount; j++) {
            sum += rawData.values[i - j][1];
        }
        result.push(sum / dayCount);
    }
    return result;
}

function index_K_line_setCharts(rawData, elementId, index_name) {
    var upColor = '#ec0000';
    var upBorderColor = '#8A0000';
    var downColor = '#00da3c';
    var downBorderColor = '#008F28';
    /**
     * @method 将K线图显示在指定的容器中
     * @param rawData：数据集   elementId ：显示容器的ID值
     * */
        // 基于准备好的dom，初始化echarts实例
    var myChart = echarts.init(document.getElementById(elementId));
    // 指定图表的配置项和数据
    var option = {
        title: {
            text: index_name,
            left: 0
        },
        tooltip: {
            trigger: 'axis',
            axisPointer: {
                type: 'cross'
            }
        },
        legend: {
            data: ['日K', 'MA5', 'MA10', 'MA20', 'MA30']
        },
        grid: {
            left: '10%',
            right: '10%',
            bottom: '15%'
        },
        xAxis: {
            type: 'category',
            data: rawData.categoryData,
            scale: true,
            boundaryGap: false,
            axisLine: {onZero: false},
            splitLine: {show: false},
            splitNumber: 20,
            min: 'dataMin',
            max: 'dataMax'
        },
        yAxis: {
            scale: true,
            splitArea: {
                show: true
            }
        },
        dataZoom: [
            {
                type: 'inside',
                start: 50,
                end: 100
            },
            {
                show: true,
                type: 'slider',
                top: '90%',
                start: 50,
                end: 100
            }
        ],
        series: [
            {
                name: '日K',
                type: 'candlestick',
                data: rawData.values,
                itemStyle: {
                    color: upColor,
                    color0: downColor,
                    borderColor: upBorderColor,
                    borderColor0: downBorderColor
                },
                markPoint: {
                    label: {
                        normal: {
                            formatter: function (param) {
                                return param != null ? Math.round(param.value) : '';
                            }
                        }
                    },
                    data: [
                        {
                            name: 'XX标点',
                            coord: ['2013/5/31', 2300],
                            value: 2300,
                            itemStyle: {
                                color: 'rgb(41,60,85)'
                            }
                        },
                        {
                            name: 'highest value',
                            type: 'max',
                            valueDim: 'highest'
                        },
                        {
                            name: 'lowest value',
                            type: 'min',
                            valueDim: 'lowest'
                        },
                        {
                            name: 'average value on close',
                            type: 'average',
                            valueDim: 'close'
                        }
                    ],
                    tooltip: {
                        formatter: function (param) {
                            return param.name + '<br>' + (param.data.coord || '');
                        }
                    }
                },
                markLine: {
                    symbol: ['none', 'none'],
                    data: [
                        [
                            {
                                name: 'from lowest to highest',
                                type: 'min',
                                valueDim: 'lowest',
                                symbol: 'circle',
                                symbolSize: 10,
                                label: {
                                    show: false
                                },
                                emphasis: {
                                    label: {
                                        show: false
                                    }
                                }
                            },
                            {
                                type: 'max',
                                valueDim: 'highest',
                                symbol: 'circle',
                                symbolSize: 10,
                                label: {
                                    show: false
                                },
                                emphasis: {
                                    label: {
                                        show: false
                                    }
                                }
                            }
                        ],
                        {
                            name: 'min line on close',
                            type: 'min',
                            valueDim: 'close'
                        },
                        {
                            name: 'max line on close',
                            type: 'max',
                            valueDim: 'close'
                        }
                    ]
                }
            },
            {
                name: 'MA5',
                type: 'line',
                data: index_K_line_calculateMA(5, rawData),
                smooth: true,
                lineStyle: {
                    opacity: 0.5
                }
            },
            {
                name: 'MA10',
                type: 'line',
                data: index_K_line_calculateMA(10, rawData),
                smooth: true,
                lineStyle: {
                    opacity: 0.5
                }
            },
            {
                name: 'MA20',
                type: 'line',
                data: index_K_line_calculateMA(20, rawData),
                smooth: true,
                lineStyle: {
                    opacity: 0.5
                }
            },
            {
                name: 'MA30',
                type: 'line',
                data: index_K_line_calculateMA(30, rawData),
                smooth: true,
                lineStyle: {
                    opacity: 0.5
                }
            },

        ]
    };

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
}

function index_K_line_show() {

    /**
     * @method 获取股指数据，显示股指k线图目前只返回上证综指和深证成指。后续再改进
     * @callback 返回的数据集json格式。其中SSE为上证综指，SZSE为深证成指
     * @return 返回包含上证综指和深证成指数组的字典集
     * **/
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "query", command: "index_daily"},
        success: function (callback) {

            var daily_data = eval(callback['SSE_000001SH']);
            var SSE_daily_data = index_K_line_splitData(daily_data);
            daily_data = eval(callback['SZSE_399001SZ']);
            var SZSE_daily_data = index_K_line_splitData(daily_data);
            index_K_line_setCharts(SSE_daily_data, 'SSE-container', '上证综指');
            index_K_line_setCharts(SZSE_daily_data, 'SZSE-container', '深证成指');
        },
        error: function () {
            alert('获取股指数据失败');

        }
    })


}


/************************
 * 查询指定股票函数
 * **********************************/

//查询指定股票信息
function query_stock_detail_info(stock_name, ts_code) {

    /**
     * 加载show_selected_stock页面,需传入查询的股票名称和ts代码，返回一个页面，直接加载
     * **/


    if (stock_name == '') {
        alert('请确定要查询的股票')
        return
    }
    if (ts_code == '') {
        alert('请确定要查询的股票')
        return
    }

    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "query", command: "stock_detail_info", stock_name: stock_name, ts_code: ts_code},
        success: function (callback) {
            $("#div_show_selected_stock").empty();
            $("#div_show_selected_stock").html(callback);
        },
        error: function () {
            alert('提交失败');
        }
    })

}

//当点击查询时，根据输入框内容，设定全局变量search_stock_name和search_ts_code的值
function get_query_stockname_tscode() {
    index_stock_name = $("#input_search_stockinfo").val().trim();//根据文本框值设置全局变量值
    index = index_stock_name_list.indexOf(index_stock_name);
    index_ts_code = index_ts_code_list[index];

}

//查询股票按钮单击事件
function btn_query_stockinfo_click() {
    get_query_stockname_tscode();//确定全局变量值
    query_stock_detail_info(index_stock_name, index_ts_code)//查询
}


/*******************************************
 * 表格相关变量及函数
 * ***********************/

var attension_data = [];
var cancel_attension_data = [];

/*
格式化关注列表,true为关注，false为未关注
 */
function operateFormatter(value, row, index) {
    if (value == true)
        return [
            '<input type="checkbox" checked onclick="">'
        ].join('');
    else
        return [
            '<input type="checkbox"  onclick="">'
        ].join('');

}

/*
格式化价格波动百分比，涨红，跌绿
 */
function pct_chg_Formatter(value, row, index) {
    if (value >= 0) {
        var a = '<span style="color: #dc3545">' + value + '</span>';
    } else {
        var a = '<span style="color: greenyellow">' + value + '</span>';
    }
    return a
}

/* 格式化股票 */
function ts_code_link_Formatter(value, row, index) {
    return [
        "<a href='#' onclick='query_attention_stock(this)'>" + value + "</a>"
    ].join('');
}

/*
在关注表格单击股票代码，调用查找股票功能，传递股票名称和代码过去，执行查询操作
 */
function query_attention_stock(param) {
    ts_code = param.innerHTML;//获取股票代码
    ts_name = $(param).parent().next()[0].innerText;//获取股票名称
    query_stock_detail_info(ts_name, ts_code);//查询股票信息，并定位到股票显示区域
    index_stock_name = ts_name;
    index_ts_code = ts_code;
    $('body,html').animate({scrollTop: $('#div_show_stock_detail_info').offset().top}, 500);


}

/*
初始化表格函数，初始化关注股票信息
 */
function init_attention_Table() {

    $('#attention_table').bootstrapTable("destroy");
    $('#attention_table').bootstrapTable({
        // height: 800,
        locale: "zh-CN",
        columns: [
            {
                title: '取消关注',
                field: 'state',
                checkbox: true,
                align: 'center',
                valign: 'middle'
            },
            {
                title: '股票代码',
                field: 'ts_code',
                align: 'center',
                valign: 'middle',
                sortable: true,
                formatter: ts_code_link_Formatter,
            }, {
                title: '股票名称',
                field: 'name',
                align: 'center',
                valign: 'middle',
                sortable: true,

            }, {
                field: 'start_attention_date',
                title: '关注日期',
                sortable: true,
                align: 'center'
            }, {
                field: 'start_attention_price',
                title: '关注时价格',
                sortable: true,
                align: 'center',
            }, {
                field: 'end_attention_date',
                title: '最新交易日期',
                sortable: true,
                align: 'center'
            }, {
                field: 'end_attention_price',
                title: '最新价格',
                sortable: true,
                align: 'center'
            }, {
                field: 'pct_chg',
                title: '价格波动百分比',
                align: 'center',
                sortable: true,
                formatter: pct_chg_Formatter,
            }, {
                field: 'strategy',
                title: '选股策略',
                align: 'center'
            },
            // {
            //     field: 'is_end',
            //     title: '关注',
            //     align: 'center',
            //     formatter: operateFormatter,
            //     // clickToSelect: true,
            // },

        ],
    });
}

/*
获取关注股票信息
 */
function get_attention_data() {
    //参数为boolean型，如果为true则查询依旧关注股票，false查询停止关注的股票
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "attention", command: "get_attention", is_end: 'True'},
        success: function (callback) {
            attension_data = callback;
            $('#attention_table').bootstrapTable("load", attension_data);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

/*
初始化表格函数，初始化取消关注股票信息
 */
function init_cancel_attention_Table() {
    $("#cancel_attention_table").bootstrapTable('destroy');
    $("#cancel_attention_table").bootstrapTable({
        // height: 800,
        locale: "zh-CN",
        columns: [
            {
                title: '重新关注',
                field: 'state',
                checkbox: true,
                align: 'center',
                valign: 'middle'
            },
            {
                title: '股票代码',
                field: 'ts_code',
                align: 'center',
                valign: 'middle',
                sortable: true,
                formatter: ts_code_link_Formatter,
            }, {
                title: '股票名称',
                field: 'name',
                align: 'center',
                valign: 'middle',
                sortable: true,

            }, {
                field: 'start_attention_date',
                title: '关注时间',
                sortable: true,
                align: 'center'
            }, {
                field: 'start_attention_price',
                title: '关注时价格',
                sortable: true,
                align: 'center',
            }, {
                field: 'end_attention_date',
                title: '取消关注时间',
                sortable: true,
                align: 'center'
            }, {
                field: 'end_attention_price',
                title: '最新价格',
                sortable: true,
                align: 'center'
            }, {
                field: 'pct_chg',
                title: '价格波动百分比',
                align: 'center',
                sortable: true,
                formatter: pct_chg_Formatter
            }, {
                field: 'strategy',
                title: '选股策略',
                align: 'center'
            },
            // {
            //     field: 'is_end',
            //     title: '关注',
            //     align: 'center',
            //     formatter: operateFormatter,
            //     // clickToSelect: true,
            // },

        ],
    });
}

/*
获取取消关注股票信息
 */
function get_cancel_attention_data() {
    //参数为boolean型，如果为true则查询依旧关注股票，false查询停止关注的股票
    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "attention", command: "get_attention", is_end: 'False'},
        success: function (callback) {
            cancel_attension_data = callback
            $("#cancel_attention_table").bootstrapTable("load", cancel_attension_data);
        },
        error: function () {
            alert('提交失败');
        }
    })
}

/*
获取当前交易日期和最新价格，对于取消关注，则是结束关注价格，对于重新关注，则是关注时价格
 */
function get_nowtime_and_nowprice(ts_code_list) {
    var nowtime = '';
    var newestprice = [];//数组json列表，每个元素应包含日期，价格，股票列表
    //获取当前系统日期，并转化未20191010格式
    date = new Date();
    year1 = date.getFullYear();
    month1 = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
    day1 = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
    nowtime = year1.toString() + month1.toString() + day1.toString();//格式化成YYYYMMDD格式


    $.ajax({
        url: "./",
        type: "GET",
        data: {command: "get_newest_date_price", query_date: nowtime, ts_code_list: ts_code_list},//查询数据库中当前最新交易数据和交易价格
        success: function (callback) {

        },
        error: function () {
            alert('提交失败');
        }
    });
    return newestprice
}

/*
提交取消关注股票操作
 */
function submit_cancel_attention(e) {
    var rows = $('#attention_table').bootstrapTable('getAllSelections');
    //获取所有选中股票的ts_code
    var ts_code_list = [];
    for (var i = 0; i < rows.length; i++) {
        ts_code_list.push(rows[i].ts_code);
    }
    if (ts_code_list.length == 0) {
        alert('请选择需要取消关注的股票');
        return;
    }

    var confirm = window.confirm('是否确认取消关注选中的股票！！！\n' + ts_code_list);
    if (!confirm) {
        return;
    }

    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "attention", command: "cancel_attention", ts_code_list: JSON.stringify(ts_code_list)},//查询数据库中当前最新交易数据和交易价格
        success: function (callback) {
            refresh_attention_table();
            refresh_cancel_attention_table();
        },
        error: function () {
            alert('提交失败');
        }

    });

}


/*
       提交重新关注股票操作
*/
function submit_afresh_attention(e) {
    var rows = $("#cancel_attention_table").bootstrapTable('getAllSelections');
    //获取所有选中股票的ts_code
    var ts_code_list = [];
    for (var i = 0; i < rows.length; i++) {
        ts_code_list.push(rows[i].ts_code);
    }
    if (ts_code_list.length == 0) {
        alert('请选择需要重新关注的股票');
        return;
    }

    var confirm = window.confirm('是否确认重新关注选中的股票！！！\n' + ts_code_list);
    if (!confirm) {
        return;
    }

    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "attention", command: "afresh_attention", ts_code_list: JSON.stringify(ts_code_list)},//查询数据库中当前最新交易数据和交易价格
        success: function (callback) {
            refresh_attention_table()
        },
        error: function () {
            alert('提交失败');
        }

    });
}


/*
清空表格数据，is_end=1,表示删除关注列表，=0表示删除取消关注列表,默认为0
*/
function clear_attention_data(is_end = 0) {
    var confirm = window.confirm('将清除当前列表所有数据，是否继续？');
    if (!confirm) {
        return;
    }


    $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "attention", command: "clear_attention", is_end: is_end},//查询数据库中当前最新交易数据和交易价格
        success: function (callback) {
            if (is_end == 1) {
                refresh_attention_table();
            } else {
                refresh_cancel_attention_table();
            }
        },
        error: function () {
            alert('提交失败');
        }

    });
}


/*
刷新表格
 */
function refresh_attention_table() {
    get_attention_data();
    init_attention_Table();

}

/*
刷新表格
 */
function refresh_cancel_attention_table() {
    get_cancel_attention_data();
    init_cancel_attention_Table();

}


/***
 * 删除所有基础数据
 * **/
function delete_all_stock_info() {
    res = confirm("确认删除所有股票基础数据吗？"); //在页面上弹出对话框
    if (res == false) return;

     $.ajax({
        url: "./",
        type: "GET",
        data: {cmd_class: "DB", command: "delete_all_stock_info"},//查询数据库中当前最新交易数据和交易价格
        success: function (callback) {
            alert(callback);
        },
        error: function () {
            alert('提交请求失败');
        }

    });


}



